package com.raul.noticias.database;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;

import com.raul.noticias.beens.Noticia;
import com.raul.noticias.beens.Seccion;
import com.raul.noticias.database.factory.MySqlDAOFactory;
import com.raul.noticias.interfaces.InterfaceNoticiasDAO;

public class NoticiasDAO implements InterfaceNoticiasDAO {

	private String cargarImagenes(int idN) {

		StringBuffer sql = null;
		String imagenes = "";
		Connection conexion = null;
		PreparedStatement stmt = null;

		try {
			sql = new StringBuffer();
			sql.append("select * from imagenes where noticia =? order by idimagenes limit 1");

			conexion = MySqlDAOFactory.conectar();
			stmt = conexion.prepareStatement(sql.toString());
			stmt.setInt(1, idN);

			ResultSet resultadoquery = stmt.executeQuery();
			while (resultadoquery.next()) {
				imagenes = resultadoquery.getString("nombre");
			}

		} catch (Exception ex) {

		}
		return imagenes;
	}

	@Override
	public String getMiniaturaNoticia(String noticiaId) {

		return null;
	}

	@Override
	public Noticia getNoticia(String noticiaId) {
		StringBuffer sql = null;
		Connection conexion = null;
		PreparedStatement stmt = null;
		Noticia noticia = null;

		try {
			sql = new StringBuffer();
			sql.append("SELECT * FROM noticia WHERE idnoticia=?");

			conexion = MySqlDAOFactory.conectar();
			stmt = conexion.prepareStatement(sql.toString());
			stmt.setString(1, noticiaId);

			ResultSet resultadoquery = stmt.executeQuery();

			while (resultadoquery.next()) {
				noticia = instanciarNoticia(resultadoquery);
			}

		} catch (Exception e) {
			e.printStackTrace();
		}

		return noticia;
	}

	@Override
	public ArrayList<Seccion> getSecciones(int padre) {
		StringBuffer sql = null;
		ArrayList<Seccion> listaSecciones = null;
		Connection conexion = null;
		PreparedStatement stmt = null;

		try {
			sql = new StringBuffer();
			sql.append("SELECT * FROM SECCIONES WHERE PADRE=?");

			conexion = MySqlDAOFactory.conectar();
			stmt = conexion.prepareStatement(sql.toString());
			stmt.setInt(1, padre);

			ResultSet resultadoquery = stmt.executeQuery();

			listaSecciones = new ArrayList<Seccion>();
			// Se recorre la lista de usuarios
			while (resultadoquery.next()) {
				listaSecciones.add(instanciarSeccion(resultadoquery));
			}

		} catch (Exception ex) {

		}

		return listaSecciones;
	}

	@Override
	public String getUltimasNoticias() {
		StringBuffer sql = null;
		StringBuffer noticias = null;
		Connection conexion = null;
		PreparedStatement stmt = null;

		try {
			sql = new StringBuffer();
			sql.append("SELECT "
					+ "t1.*, t2.nombre as secciones "
					+ "FROM noticia as t1 "
					+ "inner join secciones as t2 on (t1.seccion = t2.idsecciones ) "
					+ "where publicado=1 order by fecha desc, idnoticia asc limit 10");

			conexion = MySqlDAOFactory.conectar();
			stmt = conexion.prepareStatement(sql.toString());

			ResultSet resultadoquery = stmt.executeQuery();

			noticias = new StringBuffer();
			// Se recorre la lista de usuarios
			noticias.append("<ul>");
			while (resultadoquery.next()) {
				noticias.append("<li style=\"overflow: hidden; margin-bottom: 15px;\">"
						+ "<ul class=\"content\">"
						+ "<li style=\"width:20%; float: left;\">"
						+ "<img src=\"imagenesN/miniaturas/"
						+ cargarImagenes(resultadoquery.getInt("idnoticia"))
						+ "\" style=\"width:100%; height:100%; \" />"
						+ "</li>"
						+ "<li class=\"lititular\">"
						+ "<h3><a href=noticia?id="
						+ resultadoquery.getString("idnoticia")
						/*
						 * + resultadoquery.getString("secciones") + "/" +
						 * resultadoquery.getString("idnoticia") +
						 */
						//
						+ " class=\"titular\">"
						+ resultadoquery.getString("titular")
						+ "</a></h2>"
						+ "</li>"
						+ "<li class=\"lisubtiutular\">"
						+ "<h3 class=\"subtitular\">"
						+ resultadoquery.getString("subtitular")
						+ "</h3>"
						+ "</li>"
						+ "<li class=\"lientradilla\">"
						+ "<span>"
						+ resultadoquery.getString("fecha")
						+ " - "
						+ resultadoquery.getString("seccion")
						+ " - </span>"
						+ resultadoquery.getString("entradilla")
						+ "</li>"
						+ "</ul>" + "</li>");
			}
			noticias.append("</ul>");
		} catch (Exception ex) {

		}

		return noticias.toString();
	}

	/**
	 * Rellena los datos del alumno en sus correspondientes campos
	 * 
	 * @param rs
	 *            ResultSet con los datos que estamos procesando
	 * @return Retorna un objeto de tipo Alumno para almacenarlo en un arraylist
	 * @throws Exception
	 */
	private Noticia instanciarNoticia(ResultSet rs) throws Exception {
		Noticia noticia = new Noticia();

		noticia.setId(rs.getInt("idnoticia"));
		noticia.setTitular(rs.getString("titular"));
		noticia.setCuerpo(rs.getString("cuerpo"));
		noticia.setSubTitular(rs.getString("subtitular"));
		noticia.setEntradilla(rs.getString("entradilla"));

		return noticia;
	}

	/**
	 * Rellena los datos del alumno en sus correspondientes campos
	 * 
	 * @param rs
	 *            ResultSet con los datos que estamos procesando
	 * @return Retorna un objeto de tipo Alumno para almacenarlo en un arraylist
	 * @throws Exception
	 */
	private Seccion instanciarSeccion(ResultSet rs) throws Exception {
		int id = rs.getInt("idsecciones");
		String nombre = rs.getString("nombre");
		int padre = rs.getInt("padre");
		Seccion seccion = new Seccion(id, nombre, padre);

		return seccion;
	}
}
